/**
 * 权限管理
 * 
 * @param $
 */
(function($) {

	var SystemAuthorizationObject = {
		// 树实体
		$zTree : "",

		init : function() {
			// 初始化权限树
			this._init_tree();
		},
		/** 删除权限 */
		_delete_auth : function(treeNode) {

			layer.msg('确定删除成员：' + treeNode.name, {
				time : 0, // 20s后自动关闭
				icon : 3,
				shade : 0.3,
				btn : [ '确定', '取消' ],
				yes : function(index) {
					layer.close(index);
					var index = layer.msg('正在处理，请稍候。。。', {
						icon : 16,
						shade : 0.3
					});
					$.ajax({
						type : "GET",
						cache : false,
						data : {
							id : treeNode.id
						},
						dataType : "json",
						url : "/manage/system/authorization/delete",
						success : function(data) {
							// 关闭加载框
							layer.close(index);
							if (data != undefined && data.isSuccess == true) {
								// 移除节点
								SystemAuthorizationObject.$zTree.removeNode(treeNode);

							} else {
								layer.msg(data.message, {
									icon : 2,
									shade : 0.3,
									btn : [ '确定' ]
								});
							}
						}
					});

				}
			});

		},
		/** 添加权限 */
		_add_or_update_auth : function(treeNode, isUpdateAuth) {
			// 重置form
			var $form = $("#pf-authorization-save-form");
			$form.resetForm();
			$form.find("input[name='parentId']").val("");
			$form.find("input[name='id']").val("");

			// 如果是更新权限
			if (isUpdateAuth == true) {
				$("#pf-modal-title").html("修改权限")
				$form.find("input[name='parentName']").parent().hide();
				$form.find("input[name='name']").val(treeNode.name);
				$form.find("input[name='url']").val(treeNode.url);
				$form.find("input[name='showIndex']").val(treeNode.showIndex);
				$form.find("input[name='id']").val(treeNode.id);
				$form.find("input[name='menuIcon']").val(treeNode.menuIcon);
			} else {
				$("#pf-modal-title").html("添加权限")
				//
				$form.find("input[name='parentName']").parent().show();
				$form.find("input[name='parentName']").val(treeNode.name);
				$form.find("input[name='parentId']").val(treeNode.id);
			}
			$("#pf-add-authorization-modal").modal("show");
			$(".pf-submit").unbind();
			$(".pf-submit").click(function() {
				// 校验字段
				if (SystemAuthorizationObject._validate_form_field() == false) {
					return;
				}
				// 处理中
				var index = layer.msg('正在处理，请稍候。。。', {
					icon : 16,
					shade : 0.3
				});
				$form.ajaxSubmit({
					dataType : "json",
					success : function(data) {
						// 关闭加载框
						layer.close(index);
						if (data != undefined && data.isSuccess == true) {
							// 关闭 添加 用户的 form窗口
							$("#pf-add-authorization-modal").modal("hide");
							// 如果是更新权限
							if (isUpdateAuth == true) {
								treeNode.name = $form.find("input[name='name']").val();
								treeNode.url = $form.find("input[name='url']").val();
								treeNode.menuIcon = $form.find("input[name='menuIcon']").val();
								treeNode.showIndex = $form.find("input[name='showIndex']").val();
								SystemAuthorizationObject.$zTree.updateNode(treeNode);
							} else {
								// 添加权限节点
								SystemAuthorizationObject.$zTree.addNodes(treeNode, data.message);
							}
						} else {
							layer.msg(data.message, {
								icon : 2,
								shade : 0.3,
								btn : [ '确定' ]
							});
						}
					}
				});
			});

		},
		/**
		 * 校验不能为空的字段
		 */
		_validate_form_field : function() {
			if ($("#pf-authorization-save-form input[name='name']").val() == "") {
				layer.msg("权限名不能为空", {
					time : 0,
					icon : 2,
					shade : 0.3,
					btn : [ '确定' ]
				});
				return false;
			} else if ($("#pf-authorization-save-form input[name='showIndex']").val() == "" || isNaN($("#pf-authorization-save-form input[name='showIndex']").val())) {

				layer.msg("请正确填写序号", {
					time : 0,
					icon : 2,
					shade : 0.3,
					btn : [ '确定' ]
				});
				return false;
			}

			// else if ($("#pf-authorization-save-form input[name='url']").val()
			// == "") {
			// layer.msg("url不能为空", {
			// time : 0,
			// icon : 2,
			// shade : 0.3,
			// btn : [ '确定' ]
			// });
			// return false;
			// }
			else {
				return true;
			}
		},
		/** 初始化权限树 */
		_init_tree : function() {
			$.ajax({
				url : '/manage/system/authorization/get/all',
				type : 'GET',
				cache : false,
				dataType : 'json',
				timeout : 15000,
				error : function() {

				},
				success : function(json) {

					if (json.isSuccess) {
						init_tree(json.message);
					} else {
						layer.msg('获取权限树异常', {
							icon : 2,
							shade : 0.3
						});
					}
				}
			});

			/**
			 * 初始化zTree插件
			 */
			function init_tree(json) {
				var setting = {
					view : {
						addHoverDom : addHoverDom,
						removeHoverDom : removeHoverDom,
						selectedMulti : false
					},
					edit : {
						enable : true,
						editNameSelectAll : true,
						showRemoveBtn : showRemoveBtn,
						showRenameBtn : showRenameBtn,
						renameTitle : "编辑",
						removeTitle : "删除"
					},
					data : {
						simpleData : {
							enable : true,
							idKey : "id",
							pIdKey : "parentId",
							rootPId : ""
						}
					},
					callback : {
						beforeEditName : beforeEditName,
						beforeRemove : beforeRemove,
					}
				}
				SystemAuthorizationObject.$zTree = $.fn.zTree.init($("#authorizationTree"), setting, json);
			}
			/**
			 * 是否显示删除按钮
			 */
			function showRemoveBtn(treeId, treeNode) {
				return treeNode.parentId != null && treeNode.parentId != "";
			}
			/**
			 * 是否显示重命名按钮
			 */
			function showRenameBtn(treeId, treeNode) {
				return treeNode.parentId != null && treeNode.parentId != "";
			}
			/**
			 * 移除“添加按钮”，等
			 */
			function removeHoverDom(treeId, treeNode) {
				$("#addBtn_" + treeNode.tId).unbind().remove();
				layer.closeAll('tips');
			}
			/**
			 * 添加 “添加按钮”,并注册添加按钮事件
			 */
			function addHoverDom(treeId, treeNode) {

				var sObj = $("#" + treeNode.tId + "_span");

				//
				if (treeNode.editNameFlag || $("#addBtn_" + treeNode.tId).length > 0) {
					if ($(".layui-layer-tips").length <= 0) {
						showTip(treeNode, sObj);
					}
					return;
				}

				var addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='添加权限' onfocus='this.blur();'></span>";
				sObj.after(addStr);
				var btn = $("#addBtn_" + treeNode.tId);
				if (btn)
					// 按钮点击事件
					btn.bind("click", function() {
						layer.closeAll('tips');
						// 添加权限
						SystemAuthorizationObject._add_or_update_auth(treeNode);
						return false;
					});
				showTip(treeNode, sObj);
			}
			function showTip(treeNode, sObj) {
				//
				layer.tips('权限名：' + treeNode.name + "</br>菜单图标：" + treeNode.menuIcon + "</br>url：" + treeNode.url + "</br>显示顺序：" + treeNode.showIndex, sObj);
				// 设整提示框的left
				var left = $(".layui-layer-tips").position().left + 35;
				var top = $(".layui-layer-tips").position().top - 30;
				$(".layui-layer-tips").css("left", left + "px");
				$(".layui-layer-tips").css("top", top + "px");
			}
			/**
			 * 编辑按钮事件
			 */
			function beforeEditName(treeId, treeNode) {

				//
				SystemAuthorizationObject.$zTree.selectNode(treeNode);
				//
				layer.closeAll('tips');
				// 添加权限
				SystemAuthorizationObject._add_or_update_auth(treeNode, true);

				return false;
			}
			/**
			 * “删除按钮”事件
			 */
			function beforeRemove(treeId, treeNode) {
				//
				layer.closeAll('tips');
				//				
				SystemAuthorizationObject._delete_auth(treeNode);

				return false;
			}
		}
	}
	SystemAuthorizationObject.init();
})(jQuery);